#include <bits/stdc++.h>
using i64 = long long;
const double inf = std::numeric_limits<double>::max();
int main() {
std::cin.tie(nullptr)->sync_with_stdio(false);
std::cout << std::fixed << std::setprecision(12) << "\n";
int n, m;
std::cin >> n >> m;
std::vector<double> f(m + 1, inf), g;
f[0] = 0;
for (int i = 0; i < n; ++i) {
g.assign(m + 1, inf);
for (int j = 0; j <= m; ++j) {
for (int k = 1; k * (n - i) + j <= m; ++k) {
g[j + k] = std::min(g[j + k], f[j] + 1.0 * j / k);
}
}
std::swap(f, g);
}
std::cout << n + 2 * f[m] << '\n';
return 0;
}
1920. Build Array from Permutation | 494. Target Sum |
797. All Paths From Source to Target | 1547B - Alphabetical Strings |
1550A - Find The Array | 118B - Present from Lena |
27A - Next Test | 785. Is Graph Bipartite |
90. Subsets II | 1560A - Dislike of Threes |
36. Valid Sudoku | 557. Reverse Words in a String III |
566. Reshape the Matrix | 167. Two Sum II - Input array is sorted |
387. First Unique Character in a String | 383. Ransom Note |
242. Valid Anagram | 141. Linked List Cycle |
21. Merge Two Sorted Lists | 203. Remove Linked List Elements |
733. Flood Fill | 206. Reverse Linked List |
83. Remove Duplicates from Sorted List | 116. Populating Next Right Pointers in Each Node |
145. Binary Tree Postorder Traversal | 94. Binary Tree Inorder Traversal |
101. Symmetric Tree | 77. Combinations |
46. Permutations | 226. Invert Binary Tree |